import ConversationAPI from '../../api/inbox/conversation'
import types from '../mutation-types'
export const initialState = {
  records: [],
  uiFlags: {
    isFetching: false,
  },
}

export const getters = {
  getConversations (state) {
    return state.records
  },
  getUIFlags (state) {
    return state.uiFlags
  },
}

export const actions = {
  async get ({ commit }, { q }) {
    commit(types.SEARCH_CONVERSATIONS_SET, [])
    if (!q) {
      return
    }
    commit(types.SEARCH_CONVERSATIONS_SET_UI_FLAG, { isFetching: true })
    try {
      const {
        data: { payload },
      } = await ConversationAPI.search({ q })
      commit(types.SEARCH_CONVERSATIONS_SET, payload)
    } catch (error) {
      // Ignore error
    } finally {
      commit(types.SEARCH_CONVERSATIONS_SET_UI_FLAG, { isFetching: false })
    }
  },
}

export const mutations = {
  [types.SEARCH_CONVERSATIONS_SET] (state, records) {
    state.records = records
  },
  [types.SEARCH_CONVERSATIONS_SET_UI_FLAG] (state, uiFlags) {
    state.uiFlags = { ...state.uiFlags, ...uiFlags }
  },
}

export default {
  namespaced: true,
  state: initialState,
  getters,
  actions,
  mutations,
}
